package cn.iocoder.yudao.module.sys.controller.admin.instrumentoperationlog.vo;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import cn.idev.excel.annotation.*;

@Schema(description = "管理后台 - 仪器设备操作记录表（记录新增、修改、删除、出库、入库操作，支持追溯） Response VO")
@Data
@ExcelIgnoreUnannotated
public class InstrumentOperationLogRespVO {

    @Schema(description = "记录唯一ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "28098")
    @ExcelProperty("记录唯一ID")
    private Long id;

    @Schema(description = "仪器设备ID（逻辑外键，关联sys_instrument.id）", requiredMode = Schema.RequiredMode.REQUIRED, example = "8821")
    @ExcelProperty("仪器设备ID（逻辑外键，关联sys_instrument.id）")
    private Long instrumentId;

    @Schema(description = "操作类型（1-新增，2-修改，3-删除，4-出库，5-入库）", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
    @ExcelProperty("操作类型（1-新增，2-修改，3-删除，4-出库，5-入库）")
    private Integer operationType;

    @Schema(description = "操作人ID（逻辑外键，关联sys_user.id）", requiredMode = Schema.RequiredMode.REQUIRED, example = "11814")
    @ExcelProperty("操作人ID（逻辑外键，关联sys_user.id）")
    private Long operatorId;

    @Schema(description = "操作人姓名（冗余sys_user.nickname，避免联查）", requiredMode = Schema.RequiredMode.REQUIRED, example = "张三")
    @ExcelProperty("操作人姓名（冗余sys_user.nickname，避免联查）")
    private String operatorName;

    @Schema(description = "操作时间", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("操作时间")
    private LocalDateTime operationTime;

    @Schema(description = "操作备注（如“2025-11-04 出库用于压力测试”）", example = "你说的对")
    @ExcelProperty("操作备注（如“2025-11-04 出库用于压力测试”）")
    private String remark;

    @Schema(description = "创建时间（同操作时间）", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("创建时间（同操作时间）")
    private LocalDateTime createTime;

}